package br.com.jk.usuario.permissoes;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * "Teste de alteração"
 *
 * @author camilo
 */
@Entity
@Table(name = RegraDao.NAME_TABLE, schema = RegraDao.NAME_SCHEMA)
@XmlRootElement(name = "Regra")
@XmlAccessorType(XmlAccessType.FIELD)
public class Regra implements Serializable {

  public static final String ATTRIBUTE_ID = "id";
  public static final String ATTRIBUTE_TIPO = "tipo";
  public static final String ATTRIBUTE_GRUPO = "grupo";
  public static final String ATTRIBUTE_REGRA = "regra";
  private static final long serialVersionUID = 1L;

  public enum Tipo {

    VISUALIZACAO, ACOES
  }

  public enum Grupo {

    CIDADE, CLIENTE, CONFIG, CONSULTAXML, COTACAO, COTACAO_ITENS, COTACAO_LANCAMENTO, BANCO, CONTA_BANCO, MOVIMENTO,
    MOVIMENTO_TIPO, FORNECEDOR, PRODUTO, UF, USUARIO, VALEALIM_CARTAO, VALEALIM_CARTAOTIPO, VALEALIM_CARTAOVENDA, EMPRESA
  }

  public enum Regras {

    VISUALIZA_CIDADE, VISUALIZA_CLIENTE, VISUALIZA_CONFIG, VISUALIZA_CONSULTAXML, VISUALIZA_COTACAO, VISUALIZA_COTACAO_ITENS,
    VISUALIZA_COTACAO_LANCAMENTO, VISUALIZA_BANCO, VISUALIZA_CONTA_BANCO, VISUALIZA_MOVIMENTO, VISUALIZA_MOVIMENTO_TIPO,
    VISUALIZA_FORNECEDOR, VISUALIZA_PRODUTO, VISUALIZA_UF, VISUALIZA_USUARIO, VISUALIZA_VALEALIM_CARTAO,
    VISUALIZA_VALEALIM_CARTAOTIPO, VISUALIZA_VALEALIM_CARTAOVENDA, VISUALIZA_EMPRESA, VISUALIZA_PLANO_CONTAS, VISUALIZA_CAIXA,
    VISUALIZA_COTACAO_GERA_XML, VISUALIZA_COTACAO_IMPORTA_XML
  }
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = RegraDao.NAME_COLUMN_ID)
  @XmlElement(required = true)
  private int id;
  @Column(name = RegraDao.NAME_COLUMN_TIPO,length = 100)
  @XmlElement(name = RegraDao.NAME_COLUMN_TIPO)
  @Enumerated(EnumType.STRING)
  private Tipo tipo;
  @Column(name = RegraDao.NAME_COLUMN_GRUPO,length = 100)
  @XmlElement(name = RegraDao.NAME_COLUMN_GRUPO)
  @Enumerated(EnumType.STRING)
  private Grupo grupo;
  @Enumerated(EnumType.STRING)
  @Column(nullable = false, name = RegraDao.NAME_COLUMN_REGRA,length = 100)
  @XmlElement(name = RegraDao.NAME_COLUMN_REGRA)
  private Regras regra;

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public Tipo getTipo() {
    return tipo;
  }

  public void setTipo(Tipo tipo) {
    this.tipo = tipo;
  }

  public Grupo getGrupo() {
    return grupo;
  }

  public void setGrupo(Grupo grupo) {
    this.grupo = grupo;
  }

  public Regras getRegra() {
    return regra;
  }

  public void setRegra(Regras regra) {
    this.regra = regra;
  }

}
